import java.util.Scanner;
// volatile 保证内存可见性
public class ThreadDemo12 {
    volatile public static int flg = 0;
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            while (flg == 0) {
                // System.out.println("t");
                // 这里空着时
                // load 是主要耗时的操作
                // 编译器就对 load 进行了优化
                // 只加载了一次flg
                // 这里不空时
                // load 操作占不了多少时间
                // 编译器就没优化了
                // 可以给flg变量加一个 volatile 关键字
                // 编译器就不会对 flg 进行优化了
                // 保证了内存可见性
            }
            System.out.println("t线程结束");
        });
        Thread t2 = new Thread(() -> {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个整数：");
            flg = scanner.nextInt();
        });
        t1.start();
        t2.start();
    }
}
